package com.chy.blog_server.modular.map.entity;

import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.chy.blog_server.core.util.UserUtil;
import com.chy.blog_server.modular.sharCore.BaseEntity;
import com.chy.blog_server.modular.system.entity.SysUser;
import lombok.Getter;
import lombok.Setter;

import javax.servlet.http.HttpServletRequest;
import java.util.Date;

/**
 * @description: 高德/百度地图商家信息 实体类
 * @author: chenhuiyan
 * @create: 2025-03-22 15:16
 **/
@Getter
@Setter
@TableName(value = "map_merchant_info")
public class MapMerchantInfo extends BaseEntity {

    /**
     * 数据id
     */
    @TableField(value = "data_id")
    String dataId;

    /**
     * 商家名称
     */
    String name;

    /**
     * 省份
     */
    String province;

    /**
     * 城市
     */
    String city;

    /**
     * 区/县
     */
    String area;

    /**
     * 搜索位置
     */
    @TableField(value = "search_area")
    String searchArea;

    /**
     * 地址
     */
    String address;

    /**
     * 定位
     */
    String location;

    /**
     * 电话
     */
    String tel;

    /**
     * 信息最后更新时间
     */
    @TableField(value = "info_update_time")
    private Date infoUpdateTime;

    /**
     * 关键词
     */
    String keyword;

    /**
     * 行业类型
     */
    String type;

    /**
     * 数据来源(gaode高德地图，baidu百度地图)
     */
    @TableField(value = "data_source")
    String dataSource;

    /**
     * 添加数据时调用该方法生成
     * @param request
     */
    public void preInsert(HttpServletRequest request){
        SysUser user = UserUtil.getUserFromSession(request);
        if(ObjectUtil.isNotEmpty(user)){
            this.setCreateBy(user.getId());
            this.setUpdateBy(user.getId());
        }
        this.setId(IdUtil.simpleUUID());
        this.setCreateDate(new Date());
        this.setUpdateDate(new Date());
    }

    /**
     * 添加数据时调用该方法生成-无用户
     */
    public void preInsertNoUser(){
        this.setId(IdUtil.simpleUUID());
        this.setCreateDate(new Date());
        this.setUpdateDate(new Date());
    }

    /**
     * 更新数据时调用该方法生成
     * @param request
     */
    public void preUpdate(HttpServletRequest request){
        SysUser user = UserUtil.getUserFromSession(request);
        if(ObjectUtil.isNotEmpty(user)){
            this.setUpdateBy(user.getId());
        }
        this.setUpdateDate(new Date());
    }

    /**
     * 更新数据时调用该方法生成-无用户
     */
    public void preUpdateNoUser(){
        this.setUpdateDate(new Date());
    }

}
